#include <my_header.h>
#if 0
// 如下代码报错: Segmentation fault (core dumped), 
// 原因是: funThread 函数中定义了一个局部变量 num。 
// 函数返回时，它返回了一个指向 num 的指针。一
// 旦 funThread 函数执行完毕，num 所占用的栈内存将
// 不再有效，因此返回的指针指向一个已经被回收的内存
// 区域。当主线程尝试通过这个指针访问 num 的值时，
// 它访问了一个无效的内存地址，从而引发
// 了 "Segmentation fault"  
#endif
/* Usage: ./8_pthread_join2 */

void *funThread(void *arg){
    sleep(5);

    int num = 10;
    // 函数返回，num所指的指针将是一片空区域
    return &num;
} 

int main()
{
    pthread_t threadId;
    int ret = pthread_create(&threadId, NULL, funThread, NULL);
    THREAD_ERROR_CHECK(ret, "pthread_create");

    // 声明一个指针用于接收目标线程的退出状态
    void * retThread;
    int ret_join = pthread_join(threadId, &retThread );
    THREAD_ERROR_CHECK(ret_join, "pthread_join");

    printf("child thread retval = %ld \n",  (long)retThread);
    return 0;
}

